[ToolboxItem(false)]
public class RepeaterItem : Control, IDataItemContainer, INamingContainer
{
    // Fields
    private object dataItem;
    private int itemIndex;
    private ListItemType itemType;

    // Methods
    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    public RepeaterItem(int itemIndex, ListItemType itemType)
    {
        this.itemIndex = itemIndex;
        this.itemType = itemType;
    }

    protected override bool OnBubbleEvent(object source, EventArgs e)
    {
        if (e is CommandEventArgs)
        {
            RepeaterCommandEventArgs args = new RepeaterCommandEventArgs(this, source, (CommandEventArgs) e);
            base.RaiseBubbleEvent(this, args);
            return true;
        }
        return false;
    }

    // Properties
    public virtual object DataItem
    {
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        get
        {
            return this.dataItem;
        }
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        set
        {
            this.dataItem = value;
        }
    }

    public virtual int ItemIndex
    {
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        get
        {
            return this.itemIndex;
        }
    }

    public virtual ListItemType ItemType
    {
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        get
        {
            return this.itemType;
        }
    }

    int IDataItemContainer.DataItemIndex
    {
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        get
        {
            return this.ItemIndex;
        }
    }

    int IDataItemContainer.DisplayIndex
    {
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        get
        {
            return this.ItemIndex;
        }
    }
} 